package entity

import (
	"reflect"
	"time"
)

type User struct {
	UserId     int64     `xorm:"pk autoincr bigint(20)" form:"user_id" json:"userId"`
	DeptId     int64     `xorm:"bigint(20)" form:"deptId" json:"deptId"`
	UserName   string    `xorm:"varchar(30)"form:"userName" json:"userName"`
	NickName   string    `xorm:"varchar(30)"form:"nickname" json:"nickname"`
	UserType   string    `xorm:"varchar(2)" form:"userType" json:"userType"`
	Email      string    `xorm:"varchar(50)" form:"email" json:"email"`
	Mobile     string    `xorm:"varchar(11)"form:"mobile" json:"mobile"`
	Sex        string    `xorm:"char(1)" form:"sex" json:"sex"`
	Avatar     string    `xorm:"varchar(100)"form:"avatar"json:"avatar"`
	Password   string    `xorm:"varchar(100)"form:"password"json:"password"`
	Status     string    `xorm:"char(1)"form:"status"json:"status"`
	DelFlag    string    `xorm:"char(1)"form:"delFlag"json:"delFlag"`
	LoginIp    string    `xorm:"varchar(50)"form:"loginIp"json:"loginIp"`
	LoginDate  time.Time `xorm:"datetime"form:"loginDate" json:"loginDate"`
	CreateBy   string    `xorm:"varchar(64)"form:"createBy"json:"createBy"`
	CreateTime time.Time `xorm:"datetime"form:"createTime" json:"createTime"`
	UpdateBy   string    `xorm:"varchar(64)"form:"updateBy"json:"updateBy"`
	UpdateTime time.Time `xorm:"datetime"form:"updateTime" json:"updateTime"`
	Remark     string    `xorm:"varchar(500)"form:"remark"json:"remark"`
	Dept       Dept      `xorm:"extends"json:"dept"`
	PageNum    int       `xorm:"-" form:"pageNum" json:"pageNum"`
	PageSize   int       `xorm:"-" form:"pageSize" json:"pageSize"`
}

func (a User) IsEmpty() bool {
	return reflect.DeepEqual(a, User{})
}
func (a User) IsAdmin() bool {
	return a.UserId != 0 && a.UserId == 1
}
func (User) TableName() string {
	return "sys_user"
}
